// 需求: 需要输出 用户数据 订单数据 商品数据
// 数据之间互相联系 
// 有了用户数据才能获取订单数据
// 有了订单数据才能获取商品数据

// 使用setTimeout模拟网络请求

// 用户数据
function getUser() {
  setTimeout(() => {
    let data = "我是用户数据";
    iterator.next(data);
  }, 1000);
}

// 订单数据
function getOrder(data) {
  setTimeout(() => {
    data += "我是订单数据";
    iterator.next(data);
  }, 1000);
}

// 商品数据
function getGoods(data) {
  setTimeout(() => {
    data += "我是商品数据";
    iterator.next(data);
  }, 1000);
}

function* gen() {
  const user = yield getUser();
  const order = yield getOrder(user);
  const goods = yield getGoods(order);
  console.log(goods);
}

const iterator = gen();
iterator.next();